home *** CD-ROM | disk | FTP | other *** search
/ Creative Computers / Creative Computers CD-ROM, Volume 1 (Legendary Design Technologies, Inc.)(1994).iso / commercial / visual_inspirations / mlm / rexx / mailmerge.rexx < prev    next >
OS/2 REXX Batch file  |  1994-11-17  |  3KB  |  126 lines

  1. /*
  2.                               MailMerge.Rexx
  3.                            Written By J.L. White
  4.                         (C) 1993 Merlin's Software
  5.  
  6.                      For Use With Mailing List Manager
  7.                    Mail Merge From Database To Text File
  8. */
  9.  
  10. arg CurrentFile OutPut SendFile MergeFile
  11. call SetUp
  12. call GetData
  13. call MergeData
  14. call PrintIt
  15. exit
  16.  
  17. SetUp:
  18.     FileName = "RAM:MLM.Temp"
  19.     SendFile = strip(SendFile)
  20.     if SendFile ~= "PRT:" then SendFile = SendFile"."right(CurrentFile,4,0)
  21.     MergeFile = strip(MergeFile)
  22. return
  23.  
  24. GetData:
  25.     call open MergeData,"RAM:MLM.Temp",'R'
  26.     Address1 = strip(readln(MergeData))
  27.     Address2 = strip(readln(MergeData))
  28.     Address3 = strip(readln(MergeData))
  29.     Address4 = strip(readln(MergeData))
  30.     LabelA =  strip(readln(MergeData))
  31.     LabelB =  strip(readln(MergeData))
  32.     LabelC =  strip(readln(MergeData))
  33.     LabelD =  strip(readln(MergeData))
  34.     LabelE =  strip(readln(MergeData))
  35.     LabelF =  strip(readln(MergeData))
  36.     LabelG =  strip(readln(MergeData))
  37.     LabelH =  strip(readln(MergeData))
  38.     LabelI =  strip(readln(MergeData))
  39.     LabelJ =  strip(readln(MergeData))
  40.     call close MergeData
  41. return
  42.  
  43. MergeData:
  44.     TooLong = 0
  45.     call open MergeData,MergeFile,'R'
  46.     call open TempData,"RAM:Merge.Temp",'W'
  47.     do until eof(MergeData)
  48.             char = readch(MergeData)
  49.         if char = "<" then do
  50.             char2 = readch(MergeData)    
  51.             char3 = readch(MergeData)    
  52.             char = char""char2""char3
  53.             if char2 = "A" | char2 = "a" then char = LabelA
  54.             if char2 = "B" | char2 = "b" then char = LabelB
  55.             if char2 = "C" | char2 = "c" then char = LabelC
  56.             if char2 = "D" | char2 = "d" then char = LabelD
  57.             if char2 = "E" | char2 = "e" then char = LabelE
  58.             if char2 = "F" | char2 = "f" then char = LabelF
  59.             if char2 = "G" | char2 = "g" then char = LabelG
  60.             if char2 = "H" | char2 = "h" then char = LabelH
  61.             if char2 = "I" | char2 = "i" then char = LabelI
  62.             if char2 = "J" | char2 = "j" then char = LabelJ
  63.             if char2 = "1" then char = Address1
  64.             if char2 = "2" then char = Address2
  65.             if char2 = "3" then char = Address3
  66.             if char2 = "4" then char = Address4
  67.             end
  68.         call writech TempData,char
  69.     end
  70.     call close MergeData
  71.     call close TempData
  72. return
  73.  
  74. PrintIt:
  75.     TotalLines = 1
  76.     call open TempData,"RAM:Merge.Temp",'R'
  77.     call open SendData,SendFile,'W'
  78.     do until eof(TempData)
  79.             line = readln(TempData)
  80.         if length(line) < 80 then do
  81.             call writeln SendData,line
  82.             TotalLines = TotalLines + 1
  83.         end
  84.         else do
  85.             Long = length(line)
  86.             Words = words(line)
  87.             NewLength = 0
  88.             Length = 0
  89.             Temp = ""
  90.             x = 0
  91.             do x = 1 to Words
  92.                 NewWord = word(line,x)
  93.                 Length = wordlength(line,x)+1
  94.                 if NewLength + Length > 79 then do
  95.                     NewLength = 0
  96.                     call writeln SendData,Temp
  97.                     TotalLines = TotalLines + 1
  98.                     Temp = ""
  99.                 end
  100.                 NewLength = NewLength + Length
  101.                 Temp = insert(Temp,NewWord)
  102.                 Temp = insert(Temp," ")
  103.                 if x = Words then do
  104.                       if NewLength > 0 then do
  105.                         call writeln SendData,Temp
  106.                         TotalLines = TotalLines + 1
  107.                     end
  108.                 end
  109.             end
  110.         end
  111.         end
  112.     if SendFile = "PRT:" then do
  113.         x = 0
  114.         if OutPut = 1 then do
  115.             do x = TotalLines to 66
  116.                 call writeln SendData,""
  117.             end
  118.         end
  119.     end
  120.     call close TempData
  121.     call close SendData
  122.     address command "C:Delete >NIL: RAM:Merge.Temp"
  123.     address command "C:Delete >NIL: RAM:MLM.Temp"
  124. return
  125.  
  126.